package com.yang.service;

import com.yang.dao.BrandDao;
import com.yang.dao.CategoryDao;
import com.yang.pojo.Brand;
import com.yang.pojo.Category;

import java.sql.SQLException;
import java.util.ArrayList;

public class CategoryService {
    CategoryDao categoryDao = new CategoryDao();
    BrandDao brandDao = new BrandDao();
    //找到所有分类商品的信息
    public ArrayList<Category> findCategory() throws SQLException {
        ArrayList<Category> categories = categoryDao.selectCategory();
        return categories;
    }

    //根据id删除某一个分类
    public boolean deleteCategoryById(int categoryId) throws SQLException {

        //当执行一个分类信息删除操作时，需要先检查这个分类中是否存在品牌，如果存在品牌，则不能删除
        //1、根据分类id查询品牌信息列表，如果列表为空，则执行删除
        ArrayList<Brand> brands = brandDao.selectBrandByCategoryId(categoryId);
        if(brands.size()>0){
            return false;
        }else {
            int i = categoryDao.deleteCategoryById(categoryId);
            boolean b = i > 0;
            return b;
        }

    }

    //根据id查询分类信息
    public Category findCategoryByCategoryId(int categoryId) throws SQLException {
        Category category = categoryDao.selectCategoryById(categoryId);
        return category;
    }

    //根据分类Id修改分类信息,修改名称和图标   （对于分类的状态，通过启用和停用来实现）
    public boolean updateCategoryById(String categoryName,String categoryIcon,int categoryId) throws SQLException {
        int i = categoryDao.updateCategoryById(categoryName,categoryIcon,categoryId);
        boolean b = i>0;
        return b;
    }

    //添加分类信息
    public boolean insertCategory(String categoryName,String categoryIcon) throws SQLException {
        int i = categoryDao.insertCategory(categoryName, categoryIcon);
        boolean b = i>0;
        return b;
    }

    //状态启用
    public boolean enableCategoryStatus(int categoryId) throws SQLException {
        return changeStatusById("1",categoryId);
    }

    //状态停用
    public boolean disableCategoryStatus(int categoryId) throws SQLException {
        return changeStatusById("0",categoryId);
    }


    //根据id修改状态
    private boolean changeStatusById(String categoryStatus,int categoryId) throws SQLException {
        int i = categoryDao.updateCategoryStatus(categoryStatus, categoryId);
        boolean b = i > 0;
        return b;
    }

}
